package com.yuandian.management.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuandian.api.management.entity.ConfModuleManagement;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.management.enums.ModuleUpdateIdentityEnum;

/**
 * 模块配置管理表-Service接口
 * @author zfsn
 * @date 2023-4-19
 */
public interface ConfModuleManagementService extends IService<ConfModuleManagement> {


	/**
	 * 查询模块管理列表信息
	 *
	 * @param vo 参数
	 * @return
	 */
	R queryModuleManagementList(ConfModuleManagement vo);

	/**
	 * 批量删除
	 *
	 * @param ids
	 * @return 结果
	 */
	R deleteModuleManagemenByIds(Integer[] ids);


	/**
	 * 根据id查询模块配置管理
	 *
	 * @param id 参数
	 * @return 通用结果
	 */
	R queryModuleManagementById(Integer id);

	/**
	 * 新增或者修改模块配置管理
	 *
	 * @param module 参数
	 * @return 通用结果
	 */
	R insertOrUpdateModuleManagement(ConfModuleManagement module);

	/**
	 * 读取存储公共配置和私有配置信息(如果配置名相同取私有的)
	 */
	void getConfigData();

	/**
	 * 当更改了公有配置或者私有配置的时候更新模块状态：前提是有参数值更新才调用
	 * 系统触发更新配置为2: 待更新
	 * (配置更新标识 -1: 更新失败  0: 初始化  1:更新成功  2: 待更新  3: 更新中)
	 * @param id
	 * @return
	 */
	int updateConfigFlagById(Integer id);

	/**
	 * 当更改了公有配置或者私有配置的时候更新模块状态：前提是有参数值更新才调用
	 * 系统触发更新配置为2: 待更新
	 * (配置更新标识 -1: 更新失败  0: 初始化  1:更新成功  2: 待更新  3: 更新中)
	 * @param moduleCode
	 * @return
	 */
	int updateConfigFlagByModuleCode(String moduleCode);

	/**
	 * 查询模块配置管理表 更新配置标记 -1:失败 0：初始化 1：成功 2：更新中
	 * @param moduleName 模块名称，探针''BPM_PROBE'',前台''BPM_WEB_MAIN'',实时流''BPM_RT_FLOW'',数据重组''BPM_DATA_SERVER'',后台配置''BPM_WEB_CONFIG''
	 * @return int
	 */
	int queryByUpdateConfigFlag(String moduleName);

	/**
	 * 更新配置标记
	 *
	 * @param moduleName       模块名称
	 * @param moduleUpdateIdentityEnum 配置模块更新标识
	 * @return ModuleConfigVo
	 */
	int updateConfigFlagByModuleName(String moduleName, ModuleUpdateIdentityEnum moduleUpdateIdentityEnum);
}